import java.util.Scanner;

/**
 * Created with IntelliJ IDEA
 * Description
 * Data: 2025-10-22
 */
public class Test {

    //读入一个整数
    public static void main1(String[] args) {
        Scanner scanner = new Scanner(System.in); //system.in 标准输入

        int a = scanner.nextInt(); //读入一个整数

        //double b= scanner.nextDouble(); // 读入一个小数

        System.out.println(a);
    }

    //读入字符串
    public static void main2(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String str = scanner.nextLine(); //读入一整行，如abc def读出来也是abc def。
        System.out.println(str);

        String str2 = scanner.next(); //遇到空格结束，如abc def读出来是abc
        System.out.println(str2);
    }



    //奇怪的现象
    // 这个问题是由于Scanner类的输入缓冲机制导致的。当使用nextInt()读取年龄后，用户按下的回车键（\n）会留在输入缓冲区中，
    // 随后nextLine()会立即读取到这个换行符并返回空字符串。
    public static void main3(String[] args) {
        Scanner scanner = new Scanner(System.in);


        //这个如果放在前面，姓名就读不到：因为你输入年龄后会进行回车一下，此时后面就会读走回车，此时多加一个nextLine读走回车
        System.out.println("请输入你的年龄");
        int age = scanner.nextInt();
        System.out.println(age);

        scanner.nextLine(); //读取回车

        System.out.println("请输入你的姓名");
        String name = scanner.nextLine();
        System.out.println(name);

    }

    /**
     * 理解：在下面中第二个为什么输入体重不会读取到回车
     * 1. nextInt()的工作原理
     *    只会读取到数字字符，遇到非数字字符（包括空格、回车）就会停止
     *    不会读取和小号数字后面的换行符\n
     * 2.所以代码执行流程
     *   第一个nextInt读取到年龄数字后，回车符\n留在缓冲区
     *   第二个nextInt会跳过前导空白字符（包括上次留下的\n），然后读取体重数字
     */
    public static void main4(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入你的姓名");
        String name = scanner.nextLine();
        System.out.println(name);

        System.out.println("请输入你的年龄");
        int age = scanner.nextInt();
        System.out.println(age);

        System.out.println("请输入你的体重");
        double weight = scanner.nextDouble();
        System.out.println(weight);
    }

    public static void main5(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入你的年龄"); //如果输入 空格空格123，会直接跳过空格找到数字并进行输入；如果输入123 456，则会进行输入123
        int age = scanner.nextInt();
        System.out.println(age);

        System.out.println("请输入你的体重");
        double weight = scanner.nextDouble(); //上面如果输入123 456，则会自动读取在缓冲区的数据456，所以得到456
        System.out.println(weight);
    }

    //不断循环读，结束ctrl+d
    public static void main6(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextInt()) {
            int n = scanner.nextInt();;
            System.out.println(n);
        }
    }
}
